<?php

class Gb_Controller_Plugin_FlashMessenger extends Zend_Controller_Plugin_Abstract {

	/**
	 * После диспетчеризации рендерим ошибки в сегмент вида message
	 *
	 * @param Zend_Controller_Request_Abstract $request
	 */
	public function postDispatch(Zend_Controller_Request_Abstract $request) {
		// Инициализируем помощник FlashMessenger и получаем сообщения
		$flashMessenger = new Zend_Controller_Action_Helper_FlashMessenger();
		$messages = $flashMessenger->setNamespace('messages')->getMessages();

		// Если сообщений нет, или процес диспетчеризации не закончен успешно, просто выходим из плагина
		if (empty($messages) || !$request->isDispatched()) {
			return;
		}

		// Получаем объект  Zend_Layout
		$layout = Zend_Layout::getMvcInstance();
		// Получаем объект  вида
		$view = $layout->getView();
		// Добавляем переменную для вида
		$view->assign('messages', $messages);

		// Устанавливаем объект вида с новыми переменным и производим рендеринг скрипта вида в сегмент messages
		$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
		$viewRenderer->setView($view)
				->renderScript('messages.phtml', 'messages');
	}

}
?>
